﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
#include <QToolButton>
#include <QWidgetAction>
#include <QDoubleSpinBox>
#include <QTimeEdit>
#include <QLabel>
#include <QIcon>
#include <QMenu>
#include <QComboBox>
#include <QTextCodec>
#include <QApplication>
#include <QTimer>
#include <QCheckBox>
#include <QMenuBar>
#include <QAction>
#include <QRadioButton>
#include <QButtonGroup>
#include <QDir>
#include <QFileDialog>
#include <QThread>

#include "Common/UI-Components/Slider.h"
#include "Common/UI-Components/Playlist/PlayList.h"
#include "Common/UI-Components/SoftwareInfoDialog.h"
#include "Common/UI-Components/OptionsWidget.h"
#include "Component/Players/FmpegPlayer.h"

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void resizeEvent(QResizeEvent *event) override;


public slots:
    void setupUi();             //设置UI界面
    void seek();
    void seek(int);
    void onTimeSliderHover(int pos, int value);
    void onTimeSliderLeave();
    void initPlayer();                  //初始化播放器和渲染引擎
    void ShowVolumeSlider();            //显示隐藏音量滑动块
    void RenderTypeChanged(RENDER_TYPE type);           //渲染引擎改变
    void SoftwareInfo();                //显示软件信息
    void OpenFile();                    //打开流媒体文件

private:
    QVBoxLayout *m_MainLayout;    //主布局
    QWidget *m_Control;         //控制界面，高度设置为30
    QLabel *m_Current, *m_End;  //当前时间和结束时间
    QLabel *m_Title;            //渲染引擎
    QLabel *m_Speed;            //视频播放速度
    Slider *m_TimeSlider, *m_VolumeSlider;      //时间滑动条和声音滑动条
    QToolButton *m_VolumeBtn;                   //打开音量按钮
    QToolButton *m_PlayPauseBtn;                //暂停按钮
    QToolButton *m_StopBtn, *m_ForwardBtn, *m_BackwardBtn;      //停止按钮，向前按钮，向后按钮
    QToolButton *m_OpenBtn;     //打开流媒体文件
    QToolButton *m_InfoBtn, *m_MenuBtn;     //信息按钮，菜单按钮
    QMenu *m_Menu;      //其他菜单
    PlayList *m_PlayList, *m_History;   //播放列表，历史列表
    OptionsWidget *m_RenderOptionsWidget;       //渲染选项界面
    SoftwareInfoDialog *m_SoftwareInfoDlg;      //软件信息弹框
    FmpegPlayer * m_Player;                     //正在使用的播放器
};
#endif // MAINWINDOW_H
